package nsu.edu.zsq.service.sys;

import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;

import nsu.edu.zsq.bean.StuCourse;
import nsu.edu.zsq.param.PageQuery;
import nsu.edu.zsq.param.TchCourseParam;

/** 
* Description: 学生课程的servive类<br>
*/
public interface StudentCourseService {
    
    /**
     * 获取一条学生课程数据
     * @param id 学生课程id
     * @return StuCourse
     */
    public StuCourse getStuCourse(int id);
    
    /**
     * 获取班级的课程数量
     * @return List<Map<String, Integer>>
     */
    public List<Map<String, Integer>> countCourseByClass();
    
    /**
     * 批量/单个保存学生课程信息
     * @param tchCourseIds 教师课程id数组
     * @param classId 班级id
     */
    public void saveBatchStuCourse(int[] tchCourseIds, int classId);
    
    /**
     * 通过班级id获取该班级所有课程
     * @param classId 班级id
     * @return List<StuCourse>
     */
    public List<StuCourse> listClassCourse(int classId);
    
    /**
     * 通过专业代码获取该专业所有教师课程（只查找必修课，选修课留给学生选课）
     * @param majorNo 专业代码
     * @param pageQuery 分页数据
     * @return PageInfo<TchCourseParam>
     */
    public PageInfo<TchCourseParam> listTchCourse(String majorNo, PageQuery pageQuery);

    /**
     * 单个/批量删除学生课程
     * @param courseId 学生课程id数组
     */
    public void deleteStuCourse(int[] courseIds);

    /**
     * 更新一条学生课程信息
     * @param stuCourse 学生课程信息
     */
    public void updateStuCourse(StuCourse stuCourse);
    
    
    /**
     * 学生课程自动排课
     * @param stuCourseIds 学生课程id数组
     */
	/* public void autoStuCourse(int[] stuCourseIds); */
    

}
